/*
@author: JCxiaohugong
@date: 2020-4-11 0:20
 */

#include <stdio.h>

/*
@function：冒泡排序
    将数据从小到大排列
@parameter：
    buf: 指向待排序数据的指针变量，并回传结果。
    N：待排序数据的个数。
@Return value：
    0：成功
    -1: 失败，指针变量保存的待排序数据首地址为空
*/
int bubbleSort(char *buf, char N)
{
    int i,j;
    char tmp;

    if(buf == NULL)
    {
        return -1;
    }
    for(i = 0; i < N - 1; i++){					//N-1轮
        for(j = 0;  j < N - 1 - i;  j++){		//每轮比较N-1-i次，i为轮数
            if(buf[j] > buf[j+1]){
                tmp = buf[j];
                buf[j] = buf[j+1];
                buf[j+1] = tmp;
            }
        }
    }
    return 0;
}

int main(int argc, char const *argv[])
{
    char buf[] = {"ABC123XYZPWM"};
   
    printf("dest buf:");
    puts(buf);
    if(bubbleSort(buf, (sizeof(buf)/sizeof(buf[0])-1)) == 0)
    {
        printf("bubbleSort is sucess!\n");
        printf("result buf:");
        puts(buf);
    }
    else
    {
        printf("bubbleSort is failed! function parameter:buf is NULL\n");
    }
    return 0;
}
